widget: Reinstate custom closure func
authorBenjamin Otte <otte@redhat.com>
Thu, 21 Nov 2019 20:30:38 +0000 (21:30 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 22 Nov 2019 06:46:18 +0000 (07:46 +0100)
It turns out it ws used in various places.

gtk/gtkwidget.c

index 2cd54e13f234fed019e90508b9b0aa0cf4333724..fcb683f050179311fe1837fa77b7840c0d1dfdeb 100644 (file)
@@ -12113,6 +12113,34 @@ setup_template_child (GtkWidgetTemplate   *template_data,
   return TRUE;
 }
 
+static void
+gtk_widget_template_connect_func (GtkBuilder    *builder,
+                                 GObject       *object,
+                                 const gchar   *signal_name,
+                                 const gchar   *handler_name,
+                                 GObject       *connect_object,
+                                 GConnectFlags  flags,
+                                 gpointer       user_data)
+{
+  GClosure *closure;
+  GError *error = NULL;
+
+  closure = gtk_builder_create_closure (builder,
+                                        handler_name,
+                                        flags & G_CONNECT_SWAPPED ? TRUE : FALSE,
+                                        connect_object ? connect_object : user_data,
+                                        &error);
+
+  if (error)
+    {
+      g_warning ("%s", error->message);
+      g_error_free (error);
+      return;
+    }
+
+  g_signal_connect_closure (object, signal_name, closure, flags & G_CONNECT_AFTER ? TRUE : FALSE);
+}
+
 /**
  * gtk_widget_init_template:
  * @widget: a #GtkWidget
@@ -12212,7 +12240,7 @@ gtk_widget_init_template (GtkWidget *widget)
   if (template->connect_func)
     gtk_builder_connect_signals_full (builder, template->connect_func, template->connect_data);
   else
-    gtk_builder_connect_signals (builder);
+    gtk_builder_connect_signals_full (builder, gtk_widget_template_connect_func, widget);
 
   g_object_unref (builder);
 }